package cn.xzhang.boot.service;

import cn.xzhang.boot.common.pojo.PageResult;
import cn.xzhang.boot.model.dto.wallpaperDownloadRecord.WallpaperDownloadRecordAddReqDTO;
import cn.xzhang.boot.model.dto.wallpaperDownloadRecord.WallpaperDownloadRecordPageReqDTO;
import cn.xzhang.boot.model.dto.wallpaperDownloadRecord.WallpaperDownloadRecordUpdateReqDTO;
import cn.xzhang.boot.model.entity.WallpaperDownloadRecord;
import cn.xzhang.boot.model.vo.wallpaperDownloadRecord.WallpaperDownloadRecordSimpleVo;
import cn.xzhang.boot.model.vo.wallpaperDownloadRecord.WallpaperDownloadRecordVo;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author <a href="https://github.com/XiaoZhangCode">XiaoZhangCode</a>
 * @description 针对表【wallpaperDownloadRecord(壁纸下载记录表)】的数据库操作Service
 */
public interface WallpaperDownloadRecordService extends IService<WallpaperDownloadRecord> {

    /**
     * 添加壁纸下载记录信息。
     *
     * @param wallpaperDownloadRecordReqDTO 壁纸下载记录添加请求数据传输对象，包含要添加的壁纸下载记录的所有必要信息。
     * @return 返回添加操作的自增ID，用于标识此次添加操作。
     */
    long addWallpaperDownloadRecord(WallpaperDownloadRecordAddReqDTO wallpaperDownloadRecordReqDTO);

    /**
     * 更新壁纸下载记录信息。
     *
     * @param wallpaperDownloadRecordReqDTO 包含壁纸下载记录更新信息的请求DTO（数据传输对象）。该对象应包含需要更新的壁纸下载记录属性。
     * @return boolean 返回true如果壁纸下载记录信息更新成功，返回false如果更新失败或遇到错误。
     */
    boolean updateWallpaperDownloadRecord(WallpaperDownloadRecordUpdateReqDTO wallpaperDownloadRecordReqDTO);

    /**
     * 删除壁纸下载记录
     *
     * @param id 壁纸下载记录的唯一标识符
     * @return boolean 返回操作是否成功。true表示删除成功，false表示删除失败。
     */
    boolean deleteWallpaperDownloadRecord(Long id);

    /**
     * 根据WallpaperDownloadRecord对象获取对应的WallpaperDownloadRecordVo对象。
     *
     * @param wallpaperDownloadRecord 一个包含壁纸下载记录信息的WallpaperDownloadRecord对象。
     * @return 返回一个包含壁纸下载记录信息的WallpaperDownloadRecordVo对象。
     */
    WallpaperDownloadRecordSimpleVo getSimpleWallpaperDownloadRecordVO(WallpaperDownloadRecord wallpaperDownloadRecord);

    /**
     * 获取壁纸下载记录页面信息
     *
     * @param wallpaperDownloadRecordPageReqDTO 包含分页和筛选条件的壁纸下载记录请求数据传输对象
     * @return 返回壁纸下载记录页面的结果，包括壁纸下载记录列表和分页信息
     */
    PageResult<WallpaperDownloadRecordVo> getWallpaperDownloadRecordPage(WallpaperDownloadRecordPageReqDTO wallpaperDownloadRecordPageReqDTO);

    /**
     * 根据WallpaperDownloadRecord对象获取对应的WallpaperDownloadRecordVo对象。
     *
     * @param wallpaperDownloadRecord 一个包含壁纸下载记录信息的WallpaperDownloadRecord对象。
     * @return 返回一个包含壁纸下载记录信息的WallpaperDownloadRecordVo对象。
     */
    WallpaperDownloadRecordVo getWallpaperDownloadRecordVO(WallpaperDownloadRecord wallpaperDownloadRecord);
}
